home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Text / WASTE / WASTE 1.1.2 Distribution / Pseudo-UPI for THINK Pascal / AEObjects.p next >
Encoding:
Text File  |  1995-10-12  |  10.1 KB  |  296 lines  |  [TEXT/PJMM]

  1. unit AEObjects;
  2.  
  3. { Pascal Interface to the Macintosh Libraries }
  4.  
  5. { Copyright © Apple Computer Inc. }
  6. { All Rights Reserved }
  7.  
  8. { Adapted for use with THINK Pascal 4.0.x by Marco Piovanelli }
  9.  
  10. interface
  11.     uses
  12.         Types, AppleEvents;
  13.  
  14.     const
  15.  
  16. {***    OSL ERROR CODES            *** (!!! transplanted from Errors.p !!!) }
  17.         errAEImpossibleRange = -1720;                        { A range like 3rd to 2nd, or 1st to all. }
  18.         errAEWrongNumberArgs = -1721;                        { Logical op kAENOT used with other than 1 term }
  19.         errAEAccessorNotFound = -1723;                        { Accessor proc matching wantClass and containerType or wildcards not found }
  20.         errAENoSuchLogical = -1725;                        { Something other than AND, OR, or NOT }
  21.         errAEBadTestKey = -1726;                        { Test is neither typeLogicalDescriptor nor typeCompDescriptor }
  22.         errAENotAnObjSpec = -1727;                        { Param to AEResolve not of type 'obj ' }
  23.         errAENoSuchObject = -1728;                        { e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error. }
  24.         errAENegativeCount = -1729;                        { CountProc returned negative value }
  25.         errAEEmptyListContainer = -1730;                        { Attempt to pass empty list as container to accessor }
  26.  
  27. { *** LOGICALS *** }
  28.         kAEAND = 'AND ';
  29.         kAEOR = 'OR  ';
  30.         kAENOT = 'NOT ';
  31.  
  32. {***    ABSOLUTE ORDINAL CONSTANTS    ***}
  33.         kAEFirst = 'firs';
  34.         kAELast = 'last';
  35.         kAEMiddle = 'midd';
  36.         kAEAny = 'any ';
  37.         kAEAll = 'all ';
  38.  
  39. {***    RELATIVE ORDINAL CONSTANTS    ***}
  40.         kAENext = 'next';
  41.         kAEPrevious = 'prev';
  42.  
  43. {***    KEYWORD CONSTANT     ***}
  44.         keyAECompOperator = 'relo';
  45.         keyAELogicalTerms = 'term';
  46.         keyAELogicalOperator = 'logc';
  47.         keyAEObject1 = 'obj1';
  48.         keyAEObject2 = 'obj2';
  49.  
  50. {    ... for Keywords for getting fields out of object specifier records. }
  51.         keyAEDesiredClass = 'want';
  52.         keyAEContainer = 'from';
  53.         keyAEKeyForm = 'form';
  54.         keyAEKeyData = 'seld';
  55.  
  56. {    ... for Keywords for getting fields out of Range specifier records. }
  57.         keyAERangeStart = 'star';
  58.         keyAERangeStop = 'stop';
  59.  
  60. {    ... special handler selectors for OSL Callbacks. }
  61.         keyDisposeTokenProc = 'xtok';
  62.         keyAECompareProc = 'cmpr';
  63.         keyAECountProc = 'cont';
  64.         keyAEMarkTokenProc = 'mkid';
  65.         keyAEMarkProc = 'mark';
  66.         keyAEAdjustMarksProc = 'adjm';
  67.         keyAEGetErrDescProc = 'indc';
  68.  
  69. {***    VALUE and TYPE CONSTANTS    ***}
  70. {    ... possible values for the keyAEKeyForm field of an object specifier. }
  71.         formAbsolutePosition = 'indx';
  72.         formRelativePosition = 'rele';
  73.         formTest = 'test';
  74.         formRange = 'rang';
  75.         formPropertyID = 'prop';
  76.         formName = 'name';
  77. {    ... relevant types (some of these are often paired with forms above). }
  78.         typeObjectSpecifier = 'obj ';
  79.         typeObjectBeingExamined = 'exmn';
  80.         typeCurrentContainer = 'ccnt';
  81.         typeToken = 'toke';
  82.         typeRelativeDescriptor = 'rel ';
  83.         typeAbsoluteOrdinal = 'abso';
  84.         typeIndexDescriptor = 'inde';
  85.         typeRangeDescriptor = 'rang';
  86.         typeLogicalDescriptor = 'logi';
  87.         typeCompDescriptor = 'cmpd';
  88.  
  89. { Possible values for flags parameter to AEResolve.  They're additive }
  90.         kAEIDoMinimum = $0000;
  91.         kAEIDoWhose = $0001;
  92.         kAEIDoMarking = $0004;
  93.  
  94. {*** SPECIAL CONSTANTS FOR CUSTOM WHOSE-CLAUSE RESOLUTION }
  95.         typeWhoseDescriptor = 'whos';
  96.         formWhose = 'whos';
  97.         typeWhoseRange = 'wrng';
  98.         keyAEWhoseRangeStart = 'wstr';
  99.         keyAEWhoseRangeStop = 'wstp';
  100.         keyAEIndex = 'kidx';
  101.         keyAETest = 'ktst';
  102.  
  103. {    used for rewriting tokens in place of 'ccnt' descriptors}
  104. {    This record is only of interest to those who, when they...}
  105. {    ...get ranges as key data in their accessor procs, choose}
  106. {    ...to resolve them manually rather than call AEResolve again.}
  107.  
  108.     type
  109.         ccntTokenRecord = record
  110.                 tokenClass: DescType;
  111.                 token: AEDesc;
  112.             end;
  113.         ccntTokenRecPtr = ^ccntTokenRecord;
  114.         ccntTokenRecHandle = ^ccntTokenRecPtr;
  115.  
  116.         DescPtr = ^AEDesc;
  117.         DescHandle = ^DescPtr;
  118.  
  119. { typedefs providing type checking for procedure pointers }
  120.         OSLAccessorProcPtr = ProcPtr;  { FUNCTION OSLAccessor(desiredClass: DescType; (CONST)VAR container: AEDesc; containerClass: DescType; form: DescType; (CONST)VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT): OSErr; }
  121.         OSLCompareProcPtr = ProcPtr;  { FUNCTION OSLCompare(oper: DescType; (CONST)VAR obj1: AEDesc; (CONST)VAR obj2: AEDesc; VAR result: BOOLEAN): OSErr; }
  122.         OSLCountProcPtr = ProcPtr;  { FUNCTION OSLCount(desiredType: DescType; containerClass: DescType; (CONST)VAR container: AEDesc; VAR result: LONGINT): OSErr; }
  123.         OSLDisposeTokenProcPtr = ProcPtr;  { FUNCTION OSLDisposeToken(VAR unneededToken: AEDesc): OSErr; }
  124.         OSLGetMarkTokenProcPtr = ProcPtr;  { FUNCTION OSLGetMarkToken((CONST)VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc): OSErr; }
  125.         OSLGetErrDescProcPtr = ProcPtr;  { FUNCTION OSLGetErrDesc(VAR appDescPtr: DescPtr): OSErr; }
  126.         OSLMarkProcPtr = ProcPtr;  { FUNCTION OSLMark((CONST)VAR dToken: AEDesc; (CONST)VAR markToken: AEDesc; index: LONGINT): OSErr; }
  127.         OSLAdjustMarksProcPtr = ProcPtr;  { FUNCTION OSLAdjustMarks(newStart: LONGINT; newStop: LONGINT; (CONST)VAR markToken: AEDesc): OSErr; }
  128.         OSLAccessorUPP = UniversalProcPtr;
  129.         OSLCompareUPP = UniversalProcPtr;
  130.         OSLCountUPP = UniversalProcPtr;
  131.         OSLDisposeTokenUPP = UniversalProcPtr;
  132.         OSLGetMarkTokenUPP = UniversalProcPtr;
  133.         OSLGetErrDescUPP = UniversalProcPtr;
  134.         OSLMarkUPP = UniversalProcPtr;
  135.         OSLAdjustMarksUPP = UniversalProcPtr;
  136.  
  137.     const
  138.         uppOSLAccessorProcInfo = $000FFFE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  139.         uppOSLCompareProcInfo = $00003FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  140.         uppOSLCountProcInfo = $00003FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  141.         uppOSLDisposeTokenProcInfo = $000000E0; { FUNCTION (4 byte param): 2 byte result; }
  142.         uppOSLGetMarkTokenProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  143.         uppOSLGetErrDescProcInfo = $000000E0; { FUNCTION (4 byte param): 2 byte result; }
  144.         uppOSLMarkProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  145.         uppOSLAdjustMarksProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  146.  
  147.     function NewOSLAccessorProc (userRoutine: OSLAccessorProcPtr): OSLAccessorUPP;
  148.     inline
  149.         $2E9F;
  150.  
  151.     function NewOSLCompareProc (userRoutine: OSLCompareProcPtr): OSLCompareUPP;
  152.     inline
  153.         $2E9F;
  154.  
  155.     function NewOSLCountProc (userRoutine: OSLCountProcPtr): OSLCountUPP;
  156.     inline
  157.         $2E9F;
  158.  
  159.     function NewOSLDisposeTokenProc (userRoutine: OSLDisposeTokenProcPtr): OSLDisposeTokenUPP;
  160.     inline
  161.         $2E9F;
  162.  
  163.     function NewOSLGetMarkTokenProc (userRoutine: OSLGetMarkTokenProcPtr): OSLGetMarkTokenUPP;
  164.     inline
  165.         $2E9F;
  166.  
  167.     function NewOSLGetErrDescProc (userRoutine: OSLGetErrDescProcPtr): OSLGetErrDescUPP;
  168.     inline
  169.         $2E9F;
  170.  
  171.     function NewOSLMarkProc (userRoutine: OSLMarkProcPtr): OSLMarkUPP;
  172.     inline
  173.         $2E9F;
  174.  
  175.     function NewOSLAdjustMarksProc (userRoutine: OSLAdjustMarksProcPtr): OSLAdjustMarksUPP;
  176.     inline
  177.         $2E9F;
  178.  
  179.     function CallOSLAccessorProc (desiredClass: DescType; {CONST}
  180.                                     var container: AEDesc;
  181.                                     containerClass: DescType;
  182.                                     form: DescType; {CONST}
  183.                                     var selectionData: AEDesc;
  184.                                     var value: AEDesc;
  185.                                     accessorRefcon: LONGINT;
  186.                                     userRoutine: OSLAccessorUPP): OSErr;
  187.     inline
  188.         $205F, $4E90;
  189.  
  190.     function CallOSLCompareProc (oper: DescType; {CONST}
  191.                                     var obj1: AEDesc; {CONST}
  192.                                     var obj2: AEDesc;
  193.                                     var result: BOOLEAN;
  194.                                     userRoutine: OSLCompareUPP): OSErr;
  195.     inline
  196.         $205F, $4E90;
  197.  
  198.     function CallOSLCountProc (desiredType: DescType;
  199.                                     containerClass: DescType; {CONST}
  200.                                     var container: AEDesc;
  201.                                     var result: LONGINT;
  202.                                     userRoutine: OSLCountUPP): OSErr;
  203.     inline
  204.         $205F, $4E90;
  205.  
  206.     function CallOSLDisposeTokenProc (var unneededToken: AEDesc;
  207.                                     userRoutine: OSLDisposeTokenUPP): OSErr;
  208.     inline
  209.         $205F, $4E90;
  210.  
  211.     function CallOSLGetMarkTokenProc ({CONST}
  212.                                     var dContainerToken: AEDesc;
  213.                                     containerClass: DescType;
  214.                                     var result: AEDesc;
  215.                                     userRoutine: OSLGetMarkTokenUPP): OSErr;
  216.     inline
  217.         $205F, $4E90;
  218.  
  219.     function CallOSLGetErrDescProc (var appDescPtr: DescPtr;
  220.                                     userRoutine: OSLGetErrDescUPP): OSErr;
  221.     inline
  222.         $205F, $4E90;
  223.  
  224.     function CallOSLMarkProc ({CONST}
  225.                                     var dToken: AEDesc; {CONST}
  226.                                     var markToken: AEDesc;
  227.                                     index: LONGINT;
  228.                                     userRoutine: OSLMarkUPP): OSErr;
  229.     inline
  230.         $205F, $4E90;
  231.  
  232.     function CallOSLAdjustMarksProc (newStart: LONGINT;
  233.                                     newStop: LONGINT; {CONST}
  234.                                     var markToken: AEDesc;
  235.                                     userRoutine: OSLAdjustMarksUPP): OSErr;
  236.     inline
  237.         $205F, $4E90;
  238.  
  239.     function AEObjectInit: OSErr;
  240. { Not done by inline, but by direct linking into code.  It sets up the pack}
  241. {  such that further calls can be via inline }
  242.     function AESetObjectCallbacks (myCompareProc: OSLCompareUPP;
  243.                                     myCountProc: OSLCountUPP;
  244.                                     myDisposeTokenProc: OSLDisposeTokenUPP;
  245.                                     myGetMarkTokenProc: OSLGetMarkTokenUPP;
  246.                                     myMarkProc: OSLMarkUPP;
  247.                                     myAdjustMarksProc: OSLAdjustMarksUPP;
  248.                                     myGetErrDescProcPtr: OSLGetErrDescUPP): OSErr;
  249.     inline
  250.         $303C, $0E35, $A816;
  251.  
  252.     function AEResolve ({CONST}
  253.                                     var objectSpecifier: AEDesc;
  254.                                     callbackFlags: INTEGER;
  255.                                     var theToken: AEDesc): OSErr;
  256.     inline
  257.         $303C, $0536, $A816;
  258.  
  259.     function AEInstallObjectAccessor (desiredClass: DescType;
  260.                                     containerType: DescType;
  261.                                     theAccessor: OSLAccessorUPP;
  262.                                     accessorRefcon: LONGINT;
  263.                                     isSysHandler: BOOLEAN): OSErr;
  264.     inline
  265.         $303C, $0937, $A816;
  266.  
  267.     function AERemoveObjectAccessor (desiredClass: DescType;
  268.                                     containerType: DescType;
  269.                                     theAccessor: OSLAccessorUPP;
  270.                                     isSysHandler: BOOLEAN): OSErr;
  271.     inline
  272.         $303C, $0738, $A816;
  273.  
  274.     function AEGetObjectAccessor (desiredClass: DescType;
  275.                                     containerType: DescType;
  276.                                     var accessor: OSLAccessorUPP;
  277.                                     var accessorRefcon: LONGINT;
  278.                                     isSysHandler: BOOLEAN): OSErr;
  279.     inline
  280.         $303C, $0939, $A816;
  281.  
  282.     function AEDisposeToken (var theToken: AEDesc): OSErr;
  283.     inline
  284.         $303C, $023A, $A816;
  285.  
  286.     function AECallObjectAccessor (desiredClass: DescType; {CONST}
  287.                                     var containerToken: AEDesc;
  288.                                     containerClass: DescType;
  289.                                     keyForm: DescType; {CONST}
  290.                                     var keyData: AEDesc;
  291.                                     var token: AEDesc): OSErr;
  292.     inline
  293.         $303C, $0C3B, $A816;
  294.  
  295. implementation
  296. end.